package com.sofa.common.config;


import com.sofa.common.utils.RabbitMqHelper;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;


@Slf4j
@Configuration
@ConditionalOnClass(RabbitTemplate.class)
public class MqConfig {


    //RabbitMQ 默认处理的是 字节流（byte[]） 类型的消息：
    //如果你的应用 发送的是 JSON 对象，RabbitMQ 可能无法正确解析。
    //如果你的应用 需要接收并解析 JSON 消息，那么就需要一个 消息转换器 来自动处理 对象和字节流的转换。

    // 配置 JSON 消息转换器
    @Bean
    public MessageConverter messageConverter() {
        return new Jackson2JsonMessageConverter();
    }


    // 让 RabbitMqHelper 正确使用 Spring 管理的 RabbitTemplate
    @Bean
    public RabbitMqHelper rabbitMqHelper(RabbitTemplate rabbitTemplate) {
        return new RabbitMqHelper(rabbitTemplate);
    }

}
